package com.dc.refactoring._6_处理概括关系._6_ExtractSubclass.step3;

/**
 * Description: 用来决定当地修车厂的工作报价
 * @author: gdc
 * @date: 2020/12/12
 * @version 1.0
 */
public class JobItem {
    /**
     * 零件收费价格
     */
    private int unitPrice;
    /**
     * 数量
     */
    private int quantity;
    /**
     * 员工
     */
    protected Employee employee;
    /**
     * 是否按照工时
     */
    // step 1 当前字段，已经成为继承体系的内在信息，可以移除此字段，并使用自封装字段来处理
    //private boolean isLabor;
    protected boolean isLabor(){
        return false;
    }

    // step 2 根据 isLabor 删除后的编译，进行修改
    /*protected JobItem(int unitPrice, int quantity, boolean isLabor) {
        this.unitPrice = unitPrice;
        this.quantity = quantity;
        this.isLabor = isLabor;
    }*/

    public JobItem(int unitPrice, int quantity) {
        this.unitPrice = unitPrice;
        this.quantity = quantity;
    }

    /**
     * 获取收费金额
     */
    public int getTotalPrice(){
        return getUnitPrice() * quantity;
    }

    /**
     * 获取报价
     */
    public int getUnitPrice() {
        // 根据是否按照工时，来返回员工的报价还是当地的报价
        return isLabor() ? employee.getRate() : unitPrice;
    }

    public int getQuantity(){
        return quantity;
    }
}
